package com.zp.self.module.level_4_算法练习.数据结构.数组;

import java.util.ArrayList;
import java.util.List;

/**
 * @author By ZengPeng
 */
public class 力扣_350_两个数组的交集II {
    //测试
    public static void main(String[] args) {
        int[] c = new 力扣_350_两个数组的交集II().intersection(new int[]{1, 2, 2, 1}, new int[]{ 2, 2});
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+",");
        }
    }

    /**
     * 题目：给你两个整数数组 nums1 和 nums2 ，请你以数组形式返回两数组的交集。
     * 返回结果中每个元素出现的次数，应与元素在两个数组中都出现的次数一致
     * （如果出现次数不一致，则考虑取较小值）。可以不考虑输出结果的顺序。
     *
     * 示例 1：
     * 输入：nums1 = [1,2,2,1], nums2 = [2,2]
     * 输出：[2,2]
     *
     * 分析：
     *      1.用List 的hash判断,remove方法
     *      大神解法：先排序，通过逐个比较大小 来判断是否相等
     *
     * 边界值 & 注意点：
     *      1.
     **/

    public int[] intersection(int[] nums1, int[] nums2) {
        //list 记录数组1  ，遍历数组2时，删除掉
        ArrayList<Integer> list  =new ArrayList<>();
        List<Integer> res  =new ArrayList<>();
        for (int i = 0; i < nums1.length; i++) {
            list.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            if(list.contains(nums2[i])){
                Integer i1 = nums2[i];
                list.remove(i1);
                res.add(i1);
            }
        }

        int[] resInt =new int[res.size()];
        int i =0;
        for (Integer integer : res) {
            resInt[i++] =integer;
        }
        return resInt ;
    }

}
